package com.imcode;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class WordCount {

    public static void main(String[] args) throws IOException {
        //1.创建字符缓冲输入流(读)
        BufferedReader br = new BufferedReader(new FileReader("file/word.txt"));
        //2.逐行读取文档的内容
        String line = "";// 存储读取到的一行数据
        //3.定义一个TreeMap集合，key存储单词，value值存储单词出现的次数
        Map<String, Integer> wordMap = new TreeMap<>();
        while ((line = br.readLine()) != null) {
            // 获取到每行处理后的数据
            String s = replace(line);
            // 使用空格分隔每行数据，返回一个字符串数组，数组中存储的是一行中的每个单词
            String[] words = s.split(" ");
            // 循环遍历每个单词
            for (String word : words) {
                word = word.toLowerCase();
                // 判断word 是否在集合的key中
                if (wordMap.containsKey(word)) {
                    //如果单词已经在集合，让单词次数+1，然后覆盖原来的次数
                    wordMap.put(word, wordMap.get(word) + 1);
                } else {
                    //首次存储该单词到集合
                    wordMap.put(word,1);
                }
            }
        }
        //3.关闭流
        br.close();

        //4.输出统计结果
        for(String key : wordMap.keySet()){
            System.out.println(key + "-->" + wordMap.get(key));
        }
    }

    public static String replace(String s) {
        String newStr = s
                .replace(",", "")
                .replace("'s", "")
                .replace(".", "")
                .replace("-", " ")
                .replace("!", "")
                .replace(":", "");
        return newStr;
    }
}
